]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
appDisplay: Fix pages getting "stuck" under touch
authorJasper St. Pierre <jstpierre@mecheye.net>
Sun, 27 Apr 2014 15:05:10 +0000 (11:05 -0400)
committerJasper St. Pierre <jstpierre@mecheye.net>
Mon, 28 Apr 2014 17:30:09 +0000 (13:30 -0400)
We often call goToPage like:

  this.goToPage(this._currentPage - 1);

(or + 1). During panning, these are based on the velocity values
of the gesture action. If we're already on the first or last page
and the panning ends, it's possible to get goToPage that's either
-1 or greater than the last page.

During normal usage, this isn't a problem, since the Y values will
be correct, always. But when panning, the Y values stick to the
finger, and thus if we return early, we won't snap to the exact page,
making it seem like things get "stuck".

Fix this the simple way by clamping to the correctly-ranged values
of pageNumber

https://bugzilla.gnome.org/show_bug.cgi?id=729064

js/ui/appDisplay.js

index 2596929a48d7395e6797d816728c8159c69e66ff..0f5baf82c65d47d58a37d09514344f6642a64122 100644 (file)
@@ -81,6 +81,10 @@ function _getFolderName(folder) {
     return name;
 }
 
+function clamp(value, min, max) {
+    return Math.max(min, Math.min(max, value));
+}
+
 const BaseAppView = new Lang.Class({
     Name: 'BaseAppView',
     Abstract: true,
@@ -439,8 +443,8 @@ const AllView = new Lang.Class({
     },
 
     goToPage: function(pageNumber) {
-        if(pageNumber < 0 || pageNumber > this._grid.nPages() - 1)
-            return;
+        pageNumber = clamp(pageNumber, 0, this._grid.nPages() - 1);
+
         if (this._currentPage == pageNumber && this._displayingPopup && this._currentPopup)
             return;
         if (this._displayingPopup && this._currentPopup)